本文主要記錄使用 Github Actions 排程執行程式的學習心得,文章中如有不正確還請見諒並請讓我知道。
GitHub Actions ,GitHub 平台內建的自動化工具,主要用於 CICD,不過特性是只要在發生特定事件時,就會自動執行定義的任務,所以也能用於排程執行程式。
要排程執行程式即是把 Trigger 設定在特定時間點到點時觸發 Workflow 。
在專案的 .github/workflows/ 路徑下建立 YAML 檔,例如在每天00:00時觸發,包含一個 job 其中設定了底下的 steps 在 runner 設定為 ubuntu 最新版本的環境下運行,而共定義了有3個 step 在 job 中:
name: Hello World
on: # Trigger
schedule:
- cron: '0 16 * * *' # cron 語法 UTC 16:00 = 台灣 UTC+8 = 00:00,每天執行
workflow_dispatch: # 允許手動觸發
jobs: #Jobs
hello: # first job's name
runs-on: ubuntu-latest # Runner 設定
steps: #定義步驟
- name: 檢出程式碼
uses: actions/checkout@v4 #官方提供的 Action,用來 fetch 程式碼,讓後續步驟可以存取程式碼。
- name: 設定 Python
uses: actions/setup-python@v4
with:
python-version: '3.13'
- name: 執行程式
run: python helloWorld.py
之所以想要排程執行程式是為了自動化爬蟲,希望接續之前的文章 PTT爬蟲 - 表特版,不過以我的使用情境來說這個方法是不可行的,因為PTT會封鎖雲端IP(情報來源 pyptt : ptt第三方API 的readme文件;直接搜尋PTT robots txt/爬蟲規範找不到甚麼結果),所以後來還是選擇在本地排程執行,不過還是把對 Github Actions 的理解和基礎的設定記錄了下來。